//	COPYRIGHT (C) 1980 BY BOARD OF TRUSTEES,
//	LELAND STANFORD JUNIOR UNIVERSITY

LET ARREADPOLY(ATNUM) BE
 $( STATIC $( INNAME = NIL; PNAME = NIL; OSZ = NIL; LOOPING = NIL $)
 OSZ:=NSETWDSM1;
 NSETWDSM1:=NTYPES>>P2WDSZ;
 PNAME:=ZEROSET(MAKESET());
 NSETWDSM1:=OSZ;
 LOOPING:=FALSE;
 NAMELOOP:
 INNAME:=INS();
 IF STREQUAL(INNAME,")") DO GOTO NAMEDONE;
 IF STREQUAL(INNAME,"(") DO $( LOOPING:=TRUE; GOTO NAMELOOP $);
 INNO(); INNO();
 TEST STREQUAL(INNAME,"X") THEN FOR I=1 TO NTYPES DO PUTELEM(I,PNAME)
 OR PUTELEM(FINDTYPE(INNAME),PNAME);
 IF LOOPING DO GOTO NAMELOOP;
 NAMEDONE:
 ATTYPE!ATNUM:=PNAME
 $);

LET READARPATS() BE
 FOR PAT=1 TO NUMARPAT DO
  $( STATIC $( PATREC = NIL; LNODES = [TABLE 0] $);
  OUTSIF("CTABLE FOR AROMATIC PATTERN "); OUTNOIF(PAT);
  OUTSIF(":*C*L");
  NPATNODES:=ARPATNNDS!PAT;
  FOR I=1 TO NPATNODES DO
   $( LET NDIX = PATSTOP+I;
   STATIC $( NBR = NIL; ONBR = NIL; NDOT = NIL $);
   NDOT:=0;
   CTSTART!NDIX:=CTPTR;
   OUTNOIF(I); OUTCHIF(':'); OUTCHIF(' ');
   ARREADPOLY(NDIX);
   NBR:=ABS[INNO()];
   ONBR:=0;
   UNTIL NBR=0 DO
    $(
    TEST ONBR=NBR THEN NDOT+:=1
    OR
     $(
     STACK!CTPTR:=-(NBR+PATSTOP);
     CTPTR+:=1;
     ONBR:=NBR
     $);
    NBR:=ABS[INNO()]
    $);
   DOTS!NDIX:=NDOT;
   CTSTOP!NDIX:=CTPTR-1
   $);
  PATSTART:=PATSTOP+1;
  PATSTOP+:=NPATNODES;
  PATREC:=NEWVEC(13);
  FOR I=3 TO 12 DO PATREC!I:=0;
  PATREC!1:=PATSTART;
  PATREC!2:=PATSTOP;
  PATREC!13:=FALSE;
  PATREC!8:=LNODES;
  ARPATRECS!PAT:=PATREC
  $);
